package com.shujia.wyh.day05;

/*
    当父类中的方法只想让子类进行继承使用，而不能够重写的时候，java提供了一个关键字：final 最终的 不可改变的

    final可以修饰
        类：当类被final修饰的时候，该类不能被继承
        变量：被final修饰的变量，变量变成常量
        成员方法：被final修饰的方法，方法不能被重写

    final使用的注意事项：
        1、被final所修饰的变量什么时候进行赋值呢？在构造方法结束之前给值即可
        2、final如果修饰的是基本数据类型的变量，表示数值不能被改变
        3、final如果修饰的是引用数据类型的变量，表示地址值不能被改变

 */

//final class Demo1{
//
//}
//
//class Demo1Zi extends Demo1{
//
//}

class Fu3 {

    final int a;

//    {
//        a=100;
//    }

    Fu3() {
        a = 200;
    }

    public final void fun1() {
        System.out.println("你好");
    }
}

class Zi3 extends Fu3 {

    int num = 10;
//    @Override
//    public void fun1(){
//        System.out.println("重写了父亲的fun1方法");
//    }

    public void show1() {
//        a = 20;
        System.out.println(a);
    }
}


public class FinalDemo1 {
    public static void main(String[] args) {
//        Zi3 zi3 = new Zi3();
//        zi3.fun1();
//        zi3.show1();

        final Zi3 z1 = new Zi3();

//        z1 = new Zi3();

        System.out.println(z1.num);
        z1.num = 40;
        System.out.println(z1.num);
    }
}
